<script setup>
  import {
    env
  } from '@/http/env.js'
  import {
    onLaunch,
    onShow,
    onHide
  } from '@dcloudio/uni-app'


  onLaunch(() => {
    // #ifdef APP-PLUS
    uni.reLaunch({
      url: '/pages/LaunchPage/LaunchPage',
      success() {
        plus.navigator.closeSplashscreen()
      }
    })
    plus.runtime.getProperty(plus.runtime.appid, function(widgetInfo) {
      uni.request({
        url: `${env.baseUrl}/home/version`,
        method: 'GET',
        data: {
          type: 2
        },
        success(res) {
          if (widgetInfo.versionCode !== res.data.data.version) {
            updateHot(res.data.data.androidUrl)
            // uni.getSystemInfo({
            //   success(res) {
            //     if (res.osName == 'ios') {
            //       return
            //     } else {}
            //   }
            // })
          }
        }
      })
    })

    // #endif
    // #ifdef H5
    if (/micromessenger/.test(navigator.userAgent.toLowerCase())) {
      versionNumberApi()
    }
    // #endif
    console.log('App Launch')

  })
  onShow(() => {

  })
  onHide(() => {

  })

  // 整包更新
  function updatePackage(url) {
    // ios平台不允许这样更新，所以我们需要跳转到appstore进行更新
    if (uni.getSystemInfoSync().platform === 'ios') {
      plus.runtime.launchApplication({
        action: 'itms-apps://xxx' // 链接可以通过接口获取
      });
    } else {
      this.isDownloading = true
      // 构建了下载任务，但此时并未开始下载
      const dtask = plus.downloader.createDownload(url, {},
        (downloadResult, status) => {
          if (status === 200) {
            plus.runtime.install(downloadResult.filename, {
                force: false
              },
              function() {
                plus.runtime.restart(); // 安装成功后重启
              },
              function(e) {
                uni.showToast({
                  icon: 'none',
                  title: '下载更新失败'
                })
              });
          }
        }
      );
      // 执行安装包下载
      dtask.start();
    }
  }
  // 热更新
  function updateHot(url) {
    uni.downloadFile({
      url,
      success: (downloadResult) => {
        if (downloadResult.statusCode === 200) {
          // 下载更新文件成功后进行安装
          plus.runtime.install(downloadResult.tempFilePath, {
              force: true // 是否强制安装, 如果将要安装应用的版本号不高于现有应用的版本号则终止安装，并返回安装失败。
            },
            function() {
              uni.showToast({
                title: '更新完毕，即将重启',
                icon: 'none',
                position: 'bottom'
              })
              setTimeout(() => {
                plus.runtime.restart(); // 安装完成后重启应用
              }, 2000)
            })
        }
      }
    });
  }

  function compare(version1, version2) {
    let arr1 = version1.split(".");
    let arr2 = version2.split(".");
    let length = Math.max(arr1.length, arr2.length);
    for (let i = 0; i < length; i++) {
      const n1 = Number(arr1[i] || 0)
      const n2 = Number(arr2[i] || 0)
      if (n1 > n2) return 1
      if (n1 < n2) return -1
    }
    return 0
  }

  function versionNumberApi() {
    const version_number = uni.getSystemInfoSync().appVersion;
    uni.request({
      url: `${env.baseUrl}/home/versionNumber`,
      method: 'POST',
      success(res) {
        console.log(res.data.data.version, version_number, 999);
        const contrast = compare(res.data.data.version, version_number)
        if (contrast === 1) {
          window.location.reload()
        }
      }
    })
  }
</script>

<style lang="scss">
  @import "uview-plus/index.scss";

  body,
  uni-page-body {
    height: 100%;
    background-color: $bc;
  }

  /*每个页面公共css */
</style>